package dado;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import organizador.Livro;

public class DAOLivro extends DAODefault {

	public void createLivro(Livro livro) {
		String sql = "INSERT INTO livro" + "(titulo, autor, ano, genero,disponivel,codigo)"
				+ "VALUES(?,?,?,?,?,?)";

		try {
			stmt = conn.prepareStatement(sql);
			stmt.setString(1, livro.getTitulo());
			stmt.setString(2, livro.getAutor());
			stmt.setString(3, livro.getAno());
			stmt.setString(4, livro.getGenero());
			stmt.setBoolean(5, livro.isDisponivel());
			stmt.setString(6,livro.getCodigo());
			stmt.execute();

			stmt.close();

		} catch (SQLException e) {
			throw new RuntimeException(e);

		}
	}

	public ArrayList<Livro> readLivro() {
		ArrayList<Livro> livros = new ArrayList<Livro>();
		String sql = "SELECT * FROM LIVRO";
		try {
			stmt = conn.prepareStatement(sql);
			ResultSet rs = stmt.executeQuery();
			while (rs.next()) {
				Livro livro = new Livro();
				livro.setIdLivro(rs.getInt("idLivro"));
				livro.setTitulo(rs.getString("titulo"));
				livro.setAutor(rs.getString("autor"));
				livro.setAno(rs.getString("ano"));
				livro.setGenero(rs.getString("genero"));

				livros.add(livro);

			}
			return livros;

		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	public ArrayList<Livro> searchLivro(int dado, String livro2) {

		try {
			ArrayList<Livro> livros = new ArrayList<Livro>();
			
			String campo;
			
			if(dado==1) campo = "titulo"; else if (dado==2) campo="autor"; else campo="genero";
			
			String sql = "select * from livro where " + campo +" = ?";

			stmt = conn.prepareStatement(sql);
						
			stmt.setString(1, livro2);
		
			ResultSet rs = stmt.executeQuery();
			while (rs.next()) {
				Livro livro = new Livro();
				livro.setIdLivro(rs.getInt("idLivro"));
				livro.setTitulo(rs.getString("titulo"));
				livro.setAutor(rs.getString("autor"));
				livro.setAno(rs.getString("ano"));
				livro.setGenero(rs.getString("genero"));
				livro.setDisponivel(rs.getBoolean("disponivel" ));
				livro.setCodigo(rs.getString("codigo"));

				livros.add(livro);

			}
			return livros;

		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

	}

	public void deleteLivro(Livro livro) {
		try {
			String sql = "DELETE FROM LIVRO WHERE idlivro=?";

			stmt = conn.prepareStatement(sql);
			stmt.setInt(1, livro.getIdLivro());
			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

	public void updateLivro(Livro livro) {

		String sql = "UPDATE LIVRO SET " + "titulo =? , autor =?, ano =?, genero =?,disponivel = ? "
				+ "where codigo = ?";

		try {
			stmt = conn.prepareStatement(sql);

			stmt.setString(1, livro.getTitulo());
			stmt.setString(2, livro.getAutor());
			stmt.setString(3, livro.getAno());
			stmt.setString(4, livro.getGenero());
			stmt.setBoolean(5, livro.isDisponivel());
			stmt.setString(6,livro.getCodigo());

			stmt.execute();

			stmt.close();

		} catch (SQLException e) {
			throw new RuntimeException(e);

		}

	}
	
	public Livro procuraLivro(String codigo) {

		try {
			Livro livro = new Livro();
			
			String sql = "select * from livro where codigo = ?";

			stmt = conn.prepareStatement(sql);
						
			stmt.setString(1, codigo);
		
			ResultSet rs = stmt.executeQuery();
			while (rs.next()) {
				
				livro.setIdLivro(rs.getInt("idLivro"));
				livro.setTitulo(rs.getString("titulo"));
				livro.setAutor(rs.getString("autor"));
				livro.setAno(rs.getString("ano"));
				livro.setGenero(rs.getString("genero"));
				livro.setDisponivel(rs.getBoolean("disponivel" ));
				livro.setCodigo(rs.getString("codigo"));

				

			}
			return livro;

		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

	}

}
